package com.peas.platform.module.icims.expenditure.expenses.controller.vo;

import java.util.*;
import java.math.*;
import com.peas.platform.common.core.vo.BaseVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.*;

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel("报账单明细附件")
public class ExpenditureReimbursementItemFileVo extends BaseVo {

    // （报账单表）外键
    @ApiModelProperty(value = "报账单ID", notes = "")
    private Long expenditureReimbursementId;

    @ApiModelProperty(value = "报账单明细费用类型", notes = "枚举取值:ExpenditureReimbursementFeetype")
    @NotBlank(message = "报账单明细费用类型不能为空")
    @Size(max = 20, message = "报账单明细费用类型不能超过20个字符")
    private String expenditureReimbursementFeetype;

    // 根据报账单明细费用费类型不同，关联相应的明细表ID
    @ApiModelProperty(value = "报账单明细ID", notes = "")
    private Long expenditureReimbursementItemId;

    // （报账费用类型附件）外键
    @ApiModelProperty(value = "报账费用类型附件ID", notes = "")
    @NotNull(message = "报账费用类型附件ID不能为空")
    private Long expenditureFeetypeFileId;

    // （附件表）外键
    @ApiModelProperty(value = "附件ID", notes = "")
    private Long attachmentId;

    @ApiModelProperty(value = "附件名称", notes = "")
    @Size(max = 200, message = "附件名称不能超过200个字符")
    private String attachmentName;

    @ApiModelProperty(value = "附件URL", notes = "")
    @Size(max = 500, message = "附件URL不能超过500个字符")
    private String attachmentUrl;

    @ApiModelProperty(value = "附件大小", notes = "")
    private Long attachmentSize;

    @ApiModelProperty(value = "附件上传时间", notes = "")
    private Date attachmentUpload;

    @ApiModelProperty(value = "附件上传人", notes = "")
    @Size(max = 20, message = "附件上传人不能超过20个字符")
    private String attachmentUploader;

    @ApiModelProperty(value = "是否发票", notes = "枚举取值:CommonYesNo")
    @Size(max = 20, message = "是否发票不能超过20个字符")
    private String isInvoice;

    @ApiModelProperty(value = "发票代码", notes = "")
    @Size(max = 50, message = "发票代码不能超过50个字符")
    private String invoiceCode;

    @ApiModelProperty(value = "发票号码", notes = "")
    @Size(max = 50, message = "发票号码不能超过50个字符")
    private String invoiceNumber;

    @ApiModelProperty(value = "开票日期", notes = "")
    @Size(max = 50, message = "开票日期不能超过50个字符")
    private String invoiceDate;

    @ApiModelProperty(value = "校验码", notes = "")
    @Size(max = 50, message = "校验码不能超过50个字符")
    private String invoiceValid;

    @ApiModelProperty(value = "机器编号", notes = "")
    @Size(max = 50, message = "机器编号不能超过50个字符")
    private String invoiceMachine;

    @ApiModelProperty(value = "金额", notes = "")
    private BigDecimal invoiceAmount;

    @ApiModelProperty(value = "税额", notes = "")
    private BigDecimal invoiceRate;

    @ApiModelProperty(value = "价税合计", notes = "")
    private BigDecimal invoiceTotal;

    @ApiModelProperty(value = "价税合计(大写)", notes = "")
    @Size(max = 100, message = "价税合计(大写)不能超过100个字符")
    private String invoiceTotalText;

    @ApiModelProperty(value = "购买方名称", notes = "")
    @Size(max = 200, message = "购买方名称不能超过200个字符")
    private String invoiceBuyerName;

    @ApiModelProperty(value = "购买方纳税人识别号", notes = "")
    @Size(max = 200, message = "购买方纳税人识别号不能超过200个字符")
    private String invoiceBuyer;

    @ApiModelProperty(value = "购买方地址电话", notes = "")
    @Size(max = 200, message = "购买方地址电话不能超过200个字符")
    private String invoiceBuyerInfo;

    @ApiModelProperty(value = "购买方开户行及账号", notes = "")
    @Size(max = 200, message = "购买方开户行及账号不能超过200个字符")
    private String invoiceBuyerBank;

    @ApiModelProperty(value = "销售方名称", notes = "")
    @Size(max = 200, message = "销售方名称不能超过200个字符")
    private String invoiceSellerName;

    @ApiModelProperty(value = "销售方纳税人识别号", notes = "")
    @Size(max = 200, message = "销售方纳税人识别号不能超过200个字符")
    private String invoiceSeller;

    @ApiModelProperty(value = "销售方地址电话", notes = "")
    @Size(max = 200, message = "销售方地址电话不能超过200个字符")
    private String invoiceSellerInfo;

    @ApiModelProperty(value = "销售方开户行及账号", notes = "")
    @Size(max = 200, message = "销售方开户行及账号不能超过200个字符")
    private String invoiceSellerBank;

    @ApiModelProperty(value = "收款人", notes = "")
    @Size(max = 20, message = "收款人不能超过20个字符")
    private String invoicePayee;

    @ApiModelProperty(value = "复核", notes = "")
    @Size(max = 20, message = "复核不能超过20个字符")
    private String invoiceApprover;

    @ApiModelProperty(value = "开票人", notes = "")
    @Size(max = 20, message = "开票人不能超过20个字符")
    private String invoicePrinter;

}
